"""
创建测试订单的脚本
用于微信支付功能测试
"""
import os
import sys
import django
import uuid

# 设置 Django 环境
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'boss_backend.settings')
django.setup()

from Login.models import Order, User

def create_test_order(order_id=None, amount=0.10, user=None):
    """
    创建测试订单
    
    :param order_id: 订单ID（UUID格式），如果不提供则自动生成
    :param amount: 订单金额（元），默认 0.10 元
    :param user: 用户对象，如果不提供则使用第一个用户或创建测试用户
    :return: 创建的订单对象
    """
    # 获取或创建用户
    if not user:
        user = User.objects.first()
        if not user:
            print("未找到用户，正在创建测试用户...")
            user = User.objects.create_user(
                username='test_user',
                email='test@example.com',
                phone='13800138000',
                password='test123456'
            )
            print(f"已创建测试用户: {user.username}")
    
    # 生成订单ID
    if not order_id:
        order_id = uuid.uuid4()
    else:
        # 如果提供了字符串，转换为UUID
        if isinstance(order_id, str):
            order_id = uuid.UUID(order_id)
    
    # 检查订单是否已存在
    try:
        existing_order = Order.objects.get(id=order_id)
        print(f"订单已存在: {existing_order.id}")
        print(f"  金额: {existing_order.amount} 元")
        print(f"  状态: {existing_order.status}")
        print(f"  已支付: {existing_order.paid}")
        return existing_order
    except Order.DoesNotExist:
        pass
    
    # 创建新订单
    order = Order.objects.create(
        id=order_id,
        user=user,
        amount=amount,
        status='pending',
        paid=False
    )
    
    print("=" * 50)
    print("[成功] 测试订单创建成功！")
    print("=" * 50)
    print(f"订单ID: {order.id}")
    print(f"用户: {user.username or user.phone}")
    print(f"金额: {order.amount} 元")
    print(f"状态: {order.status}")
    print("=" * 50)
    print("\n[提示] 在前端测试页面使用以下订单ID:")
    print(f"   {order.id}")
    print("\n")
    
    return order

if __name__ == '__main__':
    import argparse
    
    parser = argparse.ArgumentParser(description='创建微信支付测试订单')
    parser.add_argument('--order-id', type=str, help='订单ID（UUID格式）')
    parser.add_argument('--amount', type=float, default=0.10, help='订单金额（元），默认 0.10')
    parser.add_argument('--user-id', type=str, help='用户ID（可选）')
    
    args = parser.parse_args()
    
    user = None
    if args.user_id:
        try:
            user = User.objects.get(id=args.user_id)
        except User.DoesNotExist:
            print(f"[错误] 用户不存在: {args.user_id}")
            sys.exit(1)
    
    create_test_order(
        order_id=args.order_id,
        amount=args.amount,
        user=user
    )

